package com.zbkj.common.utils;

import java.math.BigDecimal;

public class DistanceUtil {

    /**
     * 根据经纬度计算距离
     * @param lng1 位置1经度
     * @param lat1 位置1纬度
     * @param lng2 位置2经度
     * @param lat2 位置2纬度
     * @return 距离(m)
     */
    public static BigDecimal calculateDistance(BigDecimal lng1, BigDecimal lat1,
                                         BigDecimal lng2, BigDecimal lat2) {
        // 使用Haversine公式计算两点间距离(单位:米)
        double earthRadius = 6371000; // 地球半径(米)
        double dLat = Math.toRadians(lat2.subtract(lat1).doubleValue());
        double dLng = Math.toRadians(lng2.subtract(lng1).doubleValue());
        double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
                Math.cos(Math.toRadians(lat1.doubleValue())) *
                        Math.cos(Math.toRadians(lat2.doubleValue())) *
                        Math.sin(dLng/2) * Math.sin(dLng/2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
        return BigDecimal.valueOf(earthRadius * c);
    }
}
